//
//  "$Id$"
//
//  Copyright (c)1992-2009, ZheJiang Dahua Technology Stock CO.LTD.
//  All Rights Reserved.
//
//	Description:	无线AP接口
//	Revisions:		Year-Month-Day  SVN-Author  Modification
//

#ifndef __ACCESS_POINT_API_H__
#define __ACCESS_POINT_API_H__

#include "Types.h"
#include "Defs.h"

#ifdef __cplusplus
extern "C" {
#endif

/// \defgroup AccessPointAPI API AccesssPoint
/// 无线AP操作接口
///	\n 调用流程图:
/// \code
///    ===========================
///                |
///        	createAccessPoint
///                |
///             addRef
///                |
///             getCaps
///                |
///		 getPowerMode
///		      |
///           setPowerMode
///                |
///             release
///                |
///    ===========================
/// \endcode
/// @{

/// 无线AP特性结构体
typedef struct AccessPointCaps
{
	char		powerMode;		///< 是否支持电源控制，0-不支持，1-支持
	int		reserved[31];		///< 保留字节
}AccessPointCaps;

/// 无线AP接口，512字节
typedef struct AccessPoint
{
	/// 底层私有数据
	void *priv;

	/// 增加接口引用
	///
	/// \param [in] thiz 无线AP接口指针
	/// \retval 0 成功
	/// \retval <0 失败
	int (*addRef)(struct AccessPoint *thiz);

	/// 释放接口
	///
	/// \param [in] thiz 无线AP接口指针
	/// \retval 0 成功
	/// \retval <0 失败
	int (*release)(struct AccessPoint *thiz);

	/// 获取无线AP能力
	///
	/// \param [in] thiz 无线AP接口指针
	/// \param [out] caps 无线AP特性结构AccessPointCaps指针
	/// \retval 0 成功
	/// \retval <0 失败
	int (*getCaps)(struct AccessPoint *thiz, AccessPointCaps *caps);

	/// 无线AP电源控制
	///
	/// \param [in] thiz 无线AP接口指针
	/// \param [in] state 电源操作，0-关闭电源，1-打开电源
	/// \retval 0 成功
	/// \retval <0 失败
	int (*setPowerMode)(struct AccessPoint *thiz, int state);

	/// 获取无线AP电源状态
	///
	/// \param [in] thiz 无线AP接口指针
	/// \param [out] state 无线AP电源状态，0-关闭，1-上电
	/// \retval 0 成功
	/// \retval <0 失败
	int (*getPowerMode)(struct AccessPoint *thiz, int *state);

	/// 保留字节
	int reserved[122];
}AccessPoint;


/// 无线AP描述结构
typedef struct AccessPointDesc
{
	int		port;			///< 无线AP编号
	int		reserved[31];		///< 保留字节
}AccessPointDesc;

/// 创建无线AP接口
///
/// \param [in] desc 无线AP描述结构AccessPointDesc指针
/// \param [out] ap无线AP指针的指针
/// \retval 0 成功
/// \retval <0 失败
int PAL_API createAccessPoint(AccessPointDesc *desc, AccessPoint **ap);

/// 获取无线AP的数量
///
/// \retval 无线AP的数量
int PAL_API getAccessPointCount(void);

/// @} end of group
#ifdef __cplusplus
}
#endif

#endif //__ACCESS_POINT_API_H__

